﻿namespace Jsl.FxCop.Targets
{
    using System.ComponentModel;

    public class FixInconsistentAttributes_Component : Component
    {
        #region Browsable false
        [Browsable(false)]
        [Category("Doesn't matter")]
        public bool PublicFieldWithBadCategory;

        [Browsable(false)]
        [Category("Doesn't matter")]
        public bool PublicPropertyWithBadCategory { get; set; }

        [Browsable(false)]
        [Description("Doesn't matter")]
        public bool PublicFieldWithBadDescription;

        [Browsable(false)]
        [Description("Doesn't matter")]
        public bool PublicPropertyWithBadDescription { get; set; }
        #endregion Browsable false

        #region DesignerSerializationVisibility Hidden
        [DefaultValue(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool PublicFieldWithBadDefaultValue;

        [DefaultValue(true)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool PublicPropertyWithBadDefaultValue { get; set; }
        #endregion DesignerSerializationVisibility Hidden

        #region Non-Public
#pragma warning disable 0169
#pragma warning disable 0649
        [Browsable(true)]
        private bool NonPublicFieldWithBrowsable;

        [Category("Doesn't matter")]
        protected bool NonPublicFieldWithCategory;

        [DefaultValue(true)]
        internal bool NonPublicFieldWithDefaultValue;

        [Description("Doesn't matter")]
        private bool NonPublicFieldWithDescription;

        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        private bool NonPublicFieldWithDesignerSerializationVisibility;
        #endregion Non-Public
#pragma warning restore 0169
#pragma warning restore 0649
    }
}